package sv.gob.mh.dgii.dao.rc;

import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import org.apache.commons.beanutils.DynaBean;
import sv.gob.mh.dgii.dao.hibernate.Dao;
import sv.gob.mh.dgii.model.ImSolicitud;
import sv.gob.mh.dgii.model.RcRuc;

public interface RcRucDao extends Dao {

    public String NIT = "NIT";
    public String NRC0 = "NRC0";
    public String NRC1 = "NRC1";

    /**
     * crea un query dinamico segun los parametros retornando un listado que
     * cumpla con todos los parametros ingresados
     *
     * @param rcRuc
     * @return
     */
    public List getByTipoContrib(RcRuc rcRuc);

    /**
     * retorna el siguiente correlativo de un nit
     *
     * @param nitRaiz nit raiz
     * @return
     */
    public Integer getNextCorrelativo(String nitRaiz);

    public RcRuc findByNit(String nit);

    /**
     * retrorna la direccion en un formato especifico , como un string
     *
     * @param nit
     * @param tipoDireccion
     * @return
     * @throws Exception
     */
    public String getDireccion(String nit, String tipoDireccion) throws Exception;

    /**
     * Retorna el caracter tributario, segun el tipo
     *
     * @param nit
     * @param tipoCaracter
     * @return
     * @throws Exception
     */
    public String getCaracterTributario(String nit, String tipoCaracter) throws Exception;

    /**
     * Retorna la fecha de ingreso del Contribuyente (busca fTramite en
     * rcTramite donde sea 001)
     *
     * @param nit
     * @return
     * @throws Exception
     */
    public String getFechaIngreso(String nit) throws Exception;

    /**
     * calcula el digito de cheque para un nit
     *
     * @param nit
     * @param tipo
     * @return
     * @throws SQLException
     */
    public String getRepresentante(String nit) throws Exception;

    public Integer getDigitoChequeo(String nit, String tipo) throws SQLException;

    /**
     * retorna la inform. que se debe imprimir en una tarjeta
     *
     * @param nit
     * @return
     */
    public DynaBean getInfoTarjetaNit(String nit);

    /**
     * retorna la informac. que se debe imprimir en una tarjeta de NRC
     *
     * @param nit
     * @return
     */
    public DynaBean getInfoTarjetaNrc(String nit);

    public void termino(Object[] params) throws SQLException;

    public List getRiskList(String snombres, String s1apeRasoc, String s2apeAbrev, String cclase);

    public String getNombre(String nit) throws Exception;

    public boolean isNitInscrito(String nit, Date periodo);

    public List<DynaBean> findVehiculos(String nit);

    public List<DynaBean> findBienesRaices(String nit);

    public List<DynaBean> findCasoxTecnico(String nit, String nit2);

    public List<DynaBean> findCasoxSupervisor(String nitUsuario, String key, String tipo);

    public List<DynaBean> findCasos(String nit, String anio);

    public List<DynaBean> findAduanasImportaciones(String nit, String fini, String ffin);

    public List<DynaBean> findAduanasInternaciones(String nit, String fini, String ffin);

    public List<DynaBean> findAduanasExportaciones(String nit, String fini, String ffin);

    public List<DynaBean> findAduanasReexportaciones(String nit, String fini, String ffin);

    public List<DynaBean> findUnixTec(String nitUsuario);

    public boolean isBienestar(String nit);

    public boolean isIpsfa(String nit);

    public RcRuc findRepresentanteDeImSolicitud(ImSolicitud imSolicitud);

    public RcRuc findPropietarioDeImSolicitud(ImSolicitud imSolicitud);
}//class
